package com.school.information.core.security.handler;

import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.school.information.core.constant.CommonConstant;
import com.school.information.enums.status.DeletedEnum;
import com.school.information.utils.UserUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Slf4j
@Component
public class FiledMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        metaObject.setValue("isDeleted", DeletedEnum.NOT_DELETED);
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime", LocalDateTime.now());
        // pc端后端管理用户
        if (ObjectUtil.isNotEmpty(UserUtil.getUserId())) {
            metaObject.setValue("createUser", UserUtil.getUserId());  // 动态填充 填充当前登录的用户的 ID
            metaObject.setValue("updateUser", UserUtil.getUserId());  // 动态填充 填充当前登录的用户的 ID
        } else if (ObjectUtil.isNotEmpty(UserUtil.getWechatUserId())) {
            // 小程序客户端用户
            metaObject.setValue("createUser", UserUtil.getWechatUserId());  // 动态填充 填充当前登录的用户的 ID
            metaObject.setValue("updateUser", UserUtil.getWechatUserId());  // 动态填充 填充当前登录的用户的 ID
        } else {
            // 填充默认值
            metaObject.setValue("createUser", CommonConstant.DEFAULT_USER_ID);  // 动态填充 填充当前登录的用户的 ID
            metaObject.setValue("updateUser", CommonConstant.DEFAULT_USER_ID);  // 动态填充 填充当前登录的用户的 ID
        }
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        metaObject.setValue("updateTime", LocalDateTime.now());
        // pc端后端管理用户
        if (ObjectUtil.isNotEmpty(UserUtil.getUserId())) {
            metaObject.setValue("updateUser", UserUtil.getUserId());
        } else if (ObjectUtil.isNotEmpty(UserUtil.getWechatUserId())) {
            // 小程序客户端用户
            metaObject.setValue("updateUser", UserUtil.getWechatUserId());
        } else {
            // 填充默认值
            metaObject.setValue("updateUser", CommonConstant.DEFAULT_USER_ID);
        }

    }

}
